package utilitario;

import java.util.Calendar;
import com.toedter.calendar.JDateChooser;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
public class CFecha {

    private String dia = null;
    private String mes = null;
    private String anio = null;
    private String fechaCompleta = null;
    private String hora = null;
    private String minuto = null;
    private String segundo = null;
    private String horaSemiCompleta = null;
    private String horaCompleta = null;

    public CFecha() {
        /*FECHA*/
        Calendar calendario = Calendar.getInstance();
        this.anio = Integer.toString(calendario.get(calendario.YEAR));
        this.mes = Integer.toString(calendario.get(calendario.MONTH) + 1);
        this.dia = Integer.toString(calendario.get(calendario.DAY_OF_MONTH));
        if (this.mes.length() == 1) {
            this.mes = "0" + this.mes;
        }
        if (this.dia.length() == 1) {
            this.dia = "0" + this.dia;
        }
        this.fechaCompleta = this.anio + "-" + this.mes + "-" + this.dia;

        /*HORA*/
        this.hora = String.valueOf(calendario.get(calendario.HOUR_OF_DAY));
        this.minuto = String.valueOf(calendario.get(calendario.MINUTE));
        this.segundo = String.valueOf(calendario.get(calendario.SECOND));
        this.horaSemiCompleta = hora + ":" + minuto;
        this.horaCompleta = hora + ":" + minuto + ":" + segundo;
    }
    
    public CFecha(JDateChooser fecha) {
        /*FECHA*/
        Calendar calendario = Calendar.getInstance();
        calendario.setTime(fecha.getDate());
        this.anio = Integer.toString(calendario.get(calendario.YEAR));
        this.mes = Integer.toString(calendario.get(calendario.MONTH) + 1);
        this.dia = Integer.toString(calendario.get(calendario.DAY_OF_MONTH));
        if (this.mes.length() == 1) {
            this.mes = "0" + this.mes;
        }
        if (this.dia.length() == 1) {
            this.dia = "0" + this.dia;
        }
        this.fechaCompleta = this.anio + "-" + this.mes + "-" + this.dia;

        /*HORA*/
        this.hora = String.valueOf(calendario.get(calendario.HOUR_OF_DAY));
        this.minuto = String.valueOf(calendario.get(calendario.MINUTE));
        this.segundo = String.valueOf(calendario.get(calendario.SECOND));
        this.horaSemiCompleta = hora + ":" + minuto;
        this.horaCompleta = hora + ":" + minuto + ":" + segundo;
    }
    
    public boolean validarFecha(String fecha) {//true if the date value is in a correct dateformat
        if (fecha == null)
            return false;
        SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd"); //año-mes-dia
        if (fecha.trim().length() != formato.toPattern().length())
            return false;
        formato.setLenient(false);
        try{
            formato.parse(fecha.trim());
            return true;
        }catch(ParseException pe){
            System.out.println(String.valueOf(pe));
            return false;
        }
    }
    
    public Date fecha(String fechaIngreso){
    
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("yyyy-MM-dd");
        Date fecha=null;
        try {
            fecha = formatoDeFecha.parse(fechaIngreso);
        } catch (ParseException ex) {
            Logger.getLogger(CFecha.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fecha;   
    }
    
    public String getLugarYFecha(String date){
        String day = date.substring(date.length() - 2, date.length());
        String month = date.substring(date.length() - 5, date.length() - 3);
        String year = date.substring(0, date.length() - 6);
        int monthint = Integer.parseInt(month);
        switch (monthint) {
            case 1:
                month = "Enero";
                break;
            case 2:
                month = "Febrero";
                break;
            case 3:
                month = "Marzo";
                break;
            case 4:
                month = "Abril";
                break;
            case 5:
                month = "Mayo";
                break;
            case 6:
                month = "Junio";
                break;
            case 7:
                month = "Julio";
                break;
            case 8:
                month = "Agosto";
                break;
            case 9:
                month = "Septiembre";
                break;
            case 10:
                month = "Octubre";
                break;
            case 11:
                month = "Noviembre";
                break;
            case 12:
                month = "Diciembre";
            default:
                break;
        }
        return "Quito, " + day + " de " + month + " de " + year;
    }
    
     /**
     * @return the dia
     */
    public String getDia() {
        return dia;
    }

    /**
     * @return the mes
     */
    public String getMes() {
        return mes;
    }

    /**
     * @return the ano
     */
    public String getAnio() {
        return anio;
    }

    /**
     * @return the fechaCompleta
     */
    public String getFechaCompleta() {
        return fechaCompleta;
    }

    /**
     * @return the hora
     */
    public String getHora() {
        return hora;
    }

    /**
     * @return the minuto
     */
    public String getMinuto() {
        return minuto;
    }

    /**
     * @return the segundo
     */
    public String getSegundo() {
        return segundo;
    }

    /**
     * @return the horaSemiCompleta
     */
    public String getHoraSemiCompleta() {
        return horaSemiCompleta;
    }

    /**
     * @return the horaCompleta
     */
    public String getHoraCompleta() {
        return horaCompleta;
    }
}
